package chai.ning.overide;

public class HumanTest {

	public static void main(String[] args) {

		// 引用变量h是Human类型，因为声明时指定的就是Human
		// 声明变量时所使用类型被称作 【编译时类型】
		Human h = null ;
		
		h = new Human( "佟瑶" );
		// 编译时类型决定了可以通过变量来调用哪些方法
		h.eat( "火锅" );
		Class<?> c1 = h.getClass(); // 获得【运行时类型】
		System.out.println( c1.getName() );
		
		h = new Sinaean( "侯悟空" );
		h.eat( "牛肉面" );
		// 编译时类型决定了可以通过变量来调用哪些方法
		// h.tiaoGuangChangWu(); // 因为引用变量h的类型是Human，而该类中没有对应的方法
		Class<?> c2 = h.getClass(); // 获得【运行时类型】
		System.out.println( c2.getName() );
		
		h = new India( "莫迪" );
		h.eat( "火锅" );
		Class<?> c3 = h.getClass(); // 获得【运行时类型】
		System.out.println( c3.getName() );
		
	}

}
